package com.bilibili.dao;

import java.util.List;

import com.bilibili.entity.Follow;
import com.bilibili.entity.User;

public interface UserDao {

	/**
	 * 查询用户所有信息
	 * 
	 * @param userId 用户id
	 * @return 用户对象
	 */
	User queryUserByUserId(int userId);

	/**
	 * 查询所有我的关注
	 * 
	 * @param userId 用户id
	 * @return 所有被我关注的用户集合
	 */
	List<User> queryAllMyAttention(User user, int pageNum, int pageSize);

	/**
	 * 查询所有我的关注的总数
	 * 
	 * @param userId 用户id
	 * @return 所有被我关注的用户总数
	 */
	int queryAllMyAttentionNum(User user);

	/**
	 * 查询所有关注我的
	 * 
	 * @param userId 用户id
	 * @return 所有关注我的用户集合
	 */
	List<User> queryAllAttentionToMe(User user, int pageNum, int pageSize);

	/**
	 * 查询所有关注我的总数
	 * 
	 * @param userId 用户id
	 * @return 所有关注我的用户总数
	 */
	int queryAllAttentionToMeNum(User user);

	/**
	 * 查询两个人是否互相关注
	 * 
	 * @param follow 关注对象
	 * @return 用户对象
	 */
	User queryFollowIsMutual(Follow follow);

	/**
	 * 修改用户头像
	 * 
	 * @param user 用户对象
	 * @return 影响行数
	 */
	int updataHeadImg(User user);

	/**
	 * 根据用户名查询用户
	 * 
	 * @param username 用户名
	 * @return
	 */
	User selectUserByUsername(String username);

	/**
	 * 根据用户名和密码查询用户
	 * 
	 * @param username 用户名
	 * @param password 密码
	 * @return
	 */
	User selectUser(String username, String password);

	/**
	 * 添加用户
	 * 
	 * @param user
	 * @return
	 */
	int insertUser(User user);

	/**
	 * 查询用户名字
	 * 
	 * @param id 用户id
	 * @return 用户名字
	 */
	String selectUserNameById(int id);

	User getUserById(Integer userId);

	public List<User> SelectAllUser(int pageNum, int pageSize);

	public List<User> SelectUserByType(int type);

	public List<User> SelectUserByRole(int role, int type);

	public List<User> SelectUserByUserId(int userId);

	public int selectAllUserNum();

	public int updateByUId(int userId);

	public int reupdateByUId(int userId);

	public int resetCode(int userId);
	
	User selectUpAllInfo(int videoId);

}
